<?php
	class Entrypoint{

		function __construct($db) {
			$this->db = $db;
		}

		# 모든 리스트를 호출 한다.
		function get_entry_points($arg1, $arg2) {
			$ret = $this->db->gets($que=sprintf("SELECT * FROM `ggo_cfg_entry_point` ORDER BY uid DESC LIMIT %s, %s;", $arg1, $arg2));
			return $ret;
		}

		# 엔트리포인트를 수정한다.
		function modify_entry_points($pmap) {
			//Nlog::puts($pmap);
			$cnt = 0;
			foreach($pmap as $key=>$val){
				$ret = $this->db->que($que=sprintf("UPDATE `ggo_cfg_entry_point` SET `mode` = '%s', `file` = '%s', `desc` = '%s', `enable` = '%s' WHERE `uid` = %s;", $val['mode'], $val['file'], $val['desc'], $val['enable'], $val['uid']));
				//Nlog::puts($que);
				if($ret['has']){
					$cnt += (int)$ret['affected'];
				}
				//Nlog::put('ret',$ret);
			}
			//Nlog::put('lastquery',$this->db->get_latest_query());
			//Nlog::put('cnt',$cnt);
			return $cnt;
		}

		# 시작 패키지를 구한다.
		function get_init_packages($mode) {
			$ret = $this->db->get($que=sprintf("SELECT * FROM `ggo_cfg_entry_point` WHERE mode = '%s' AND enable ='y'; ", $mode));
			return $ret;
		}


		# 엔트리 포인트를 생성한다.
		function create_entry_points($pmap) {
			$ret1 = $this->db->que($que = sprintf("INSERT INTO `ggo_cfg_entry_point` SET `mode` = '%s', `file` = '%s', `desc` = '%s' ;\n", $pmap['mode'], $pmap['file'], $pmap['desc']));
			//Nlog::xmp($ret1);
			if($ret1['has']){
				$cnt = 1;
			} else {
				$cnt = 0;
			}
			return $cnt;
		}

		# 현재 URI(packages)가 스타팅 포인트에 등록되어있는지 확인 한다. 이후 서브루틴이 실행된다.
		function observer($sess) {
			$ret = $this->db->gets($que = sprintf("SELECT * FROM `ggo_cfg_entry_point` WHERE `mode` != 'admin' AND `mode` != 'users' AND `enable`='y';"));
		//	Nlog::puts('ret', $ret);
			if($ret['has'] && $ret['cnt'] != 0 ) {
				foreach($ret['res'] as $key=>$val){
					$this->func = (string)$val['mode'];

					//echo $this->func;

					switch($this->func){
						case 'ladyfirst':
							//Mover::redirect('users.entrypoint.ladyfirst');
						break;
						default :
							return NULL;
						break;
					}

	//				$func = $this->func;
	//				$func = create_function('$a,$b','return ($a+$b);');
	//				echo $func(1,2);
	//				function $this->func() {
	//					echo __METHOD__;
	//				}
				}

//				function test() {
//					echo __FUNCTION__;
//				}

				return $ret;
			} else {
				return FALSE;
			}
		}
	}
?>